package com.googlecode.olabs.common.client.contact;

import java.io.Serializable;
import java.util.Collection;

import com.googlecode.olabs.common.client.contact.field.Field;
import com.googlecode.olabs.common.client.contact.field.FormattedNameField;
import com.googlecode.olabs.common.client.contact.field.IdField;
import com.googlecode.olabs.common.client.contact.field.NameField;

public interface Contact extends Serializable {

	/** Returns a copied collection of the Fields */
	Collection<Field> getFields();

	void addField(Field field);

	boolean removeField(Field field);

	void clearFields();

	/** Is this a valid card (missing Id, etc) */
	boolean isValid();

	// Convenience methods
	IdField getId();

	FormattedNameField getFormattedName();

	NameField getName();
}
